package fun.formoji.commons.model;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * <code>ServiceCode</code>
 * <desc>
 * 描述：
 * <desc/>
 * <b>Create Time:</b> 2020/8/17 17:28.
 *
 * @author hshe
 */
@AllArgsConstructor
@Getter
public enum ServiceCode {
    /* 成功状态码 */
    SUCCESS(0, "成功"),

    /* 成功状态码 */
    FAILURE( 1, "请求失败"),

    /* 参数错误：10001-19999 */
    PARAM_IS_INVALID( 10001, "参数非法"),
    PARAM_IS_BLANK( 10002, "参数为空"),
    PARAM_TYPE_BIND_ERROR( 10003, "参数类型错误"),
    PARAM_NOT_COMPLETE( 10004, "参数缺失"),

    /* 用户错误：20001-29999*/
    USER_NOT_LOGGED_IN( 20001, "用户未登录"),
    USER_LOGIN_ERROR( 20002, "账号不存在或密码错误"),
    USER_ACCOUNT_FORBIDDEN( 20003, "账号已被禁用"),
    USER_NOT_EXIST( 20004, "用户不存在"),
    USER_HAS_EXISTED( 20005, "用户已存在"),
    LOGIN_CREDENTIAL_EXISTED( 20006, "凭证已存在"),

    /* 业务错误：30001-39999 */
    BUSINESS_FAILURE( 30000, "业务失败"),
    BUSINESS_ERROR( 30001, "业务错误"),

    /* 系统错误：40001-49999 */
    SYSTEM_INNER_ERROR( 40001, "系统繁忙，请稍后重试"),

    /* 数据错误：50001-599999 */
    DATA_RESULT_NONE( 50001, "数据未找到"),
    DATA_IS_WRONG( 50002, "数据有误"),
    DATA_ALREADY_EXISTED( 50003, "数据已存在"),
    DATA_FOUND_ERROR( 50004, "数据查询错误"),
    DATA_QUERY_RUNNING( 50005, "数据正在导出"),



    /* 接口错误：60001-69999 */
    INTERFACE_INNER_INVOKE_ERROR( 60001, "内部系统接口调用异常"),
    INTERFACE_OUTER_INVOKE_ERROR( 60002, "外部系统接口调用异常"),
    INTERFACE_FORBID_VISIT( 60003, "该接口禁止访问"),
    INTERFACE_ADDRESS_INVALID( 60004, "接口地址无效"),
    INTERFACE_REQUEST_TIMEOUT( 60005, "接口请求超时"),
    INTERFACE_EXCEED_LOAD( 60006, "接口负载过高"),

    /* 权限错误：70001-79999 */
    PERMISSION_NO_ACCESS( 70001, "无访问权限"),
    RESOURCE_EXISTED( 70002, "资源已存在"),
    RESOURCE_NOT_EXISTED( 70003, "资源不存在");

    private final int code;
    private final String msg;
}
